# @author : sentry
# @since : 2023-09-12
# 利用栈打印菱形

"""
输入边长n,打印对应边长的菱形
分析：
1.打印几行
2.每一行打印几个空格，几个星星
3.前几行打印之前加入到栈，利用栈的后进先出原则打印后几行的内容
....*
...***
..*****
.*******
*********
 *******
  *****
   ***
    *
"""


def diamond(n):
    stack = []
    # 需要打印 2*n-1 行
    for i in range(1, 2 * n):
        # 上半部分
        if i <= n:
            p_str = ' ' * (n - i) + '*' * (2 * i - 1)
            print(p_str)
            if i != n:
                stack.append(p_str)
        else:
            # 下半部分直接出栈即可
            print(stack.pop())


diamond(15)
